home *** CD-ROM | disk | FTP | other *** search
/ Chip 2011 November / CHIP_2011_11.iso / Programy / Inne / Gry / Carnage_Contest / scripts / CC Original / weapons / Trap Kit.lua < prev    next >
Text File  |  2010-08-31  |  5KB  |  144 lines

  1. --------------------------------------------------------------------------------
  2. -- Weapon Trap Kit + Projectile Trap Kit
  3. -- Original Carnage Contest Weapon
  4. -- Script by DC, July 2010, www.UnrealSoftware.de
  5. --------------------------------------------------------------------------------
  6.  
  7. -- Setup Tables
  8. if cc==nil then cc={} end
  9. cc.trapkit={}
  10. cc.trapkit.trapkit={}
  11.  
  12. -- Load & Prepare Ressources
  13. cc.trapkit.gfx_icon=loadgfx("weapons/trapkit.png")                -- Weapon Icon
  14. setmidhandle(cc.trapkit.gfx_icon)
  15. cc.trapkit.gfx_wpn=loadgfx("weapons/trap.bmp")                    -- Weapon
  16. sethandle(cc.trapkit.gfx_wpn,7,9)
  17. cc.trapkit.sfx_attack=loadsfx("throw.ogg")                        -- Attack Sound
  18. cc.trapkit.sfx_bounce=loadsfx("bounce.wav")                        -- Bounce Sound
  19.  
  20. --------------------------------------------------------------------------------
  21. -- Weapon: trapkit
  22. --------------------------------------------------------------------------------
  23.  
  24. cc.trapkit.id=addweapon("cc.trapkit","Trap Kit",cc.trapkit.gfx_icon,0,2)    -- Add Weapon (0 uses, first in round 2)
  25. cc.trapkit.ammo=3                                                            -- 3 Mines
  26.  
  27. function cc.trapkit.draw()                                                    -- Draw
  28.     if weapon_shots<cc.trapkit.ammo then
  29.         if getplayeraction(0)==0 then
  30.             setblend(blend_alpha)
  31.             setalpha(1)
  32.             setcolor(255,255,255)
  33.             setscale(1,1)
  34.             setrotation(0)
  35.             drawimage(cc.trapkit.gfx_wpn,getplayerx(0)+getplayerdirection(0)*7,getplayery(0)+2)
  36.         end
  37.         -- HUD ammobar
  38.         if cc.trapkit.ammo-weapon_shots>0 then
  39.             hudammobar(cc.trapkit.ammo-weapon_shots,cc.trapkit.ammo)
  40.         end
  41.     end
  42. end
  43.  
  44. function cc.trapkit.attack(attack)                                            -- Attack
  45.     if weapon_timer>0 then
  46.         weapon_timer=weapon_timer-1
  47.     end
  48.     if (weapon_shots<cc.trapkit.ammo) then
  49.         if attack==1 and weapon_timer<=0 then
  50.             -- No more weapon switching!
  51.             useweapon(0)
  52.             playsound(cc.trapkit.sfx_attack)
  53.             weapon_shots=weapon_shots+1
  54.             id=createprojectile(cc.trapkit.trapkit.id)
  55.             projectiles[id]={}
  56.             -- Ignore collision with current player at beginning
  57.             projectiles[id].ignore=playercurrent()
  58.             -- Set initial position of projectile
  59.             projectiles[id].x=getplayerx(0)+getplayerdirection(0)*7
  60.             projectiles[id].y=getplayery(0)+2
  61.             -- Set speed of projectile
  62.             projectiles[id].sx=getplayerdirection(0)*0.5
  63.             projectiles[id].sy=-1
  64.             -- Timer
  65.             weapon_timer=50
  66.             -- End Turn
  67.             if weapon_shots>=cc.trapkit.ammo then
  68.                 endturn()
  69.             end
  70.         end
  71.     end
  72. end
  73.  
  74. --------------------------------------------------------------------------------
  75. -- Projectile: trapkit
  76. --------------------------------------------------------------------------------
  77.  
  78. cc.trapkit.trapkit.id=addprojectile("cc.trapkit.trapkit")        -- Add Projectile
  79.  
  80. function cc.trapkit.trapkit.draw(id)                            -- Draw
  81.     -- Setup draw mode
  82.     setblend(blend_alpha)
  83.     setalpha(1)
  84.     setcolor(255,255,255)
  85.     setscale(1,1)
  86.     setrotation(0)
  87.     -- Draw projectile
  88.     drawimage(cc.trapkit.gfx_wpn,projectiles[id].x,projectiles[id].y)
  89.     -- Draw Arrow if out of Screen
  90.     outofscreenarrow(projectiles[id].x,projectiles[id].y)
  91. end
  92.  
  93. function cc.trapkit.trapkit.update(id)                    -- Update
  94.     -- Gravity influence on speed + decrease x speed
  95.     projectiles[id].sx=projectiles[id].sx*0.95
  96.     projectiles[id].sy=projectiles[id].sy+getgravity()
  97.     -- Move (in substep loop for optimal collision precision)
  98.     msubt=math.ceil(math.max(math.abs(projectiles[id].sx),math.abs(projectiles[id].sy))/3)
  99.     msubx=projectiles[id].sx/msubt
  100.     msuby=projectiles[id].sy/msubt
  101.     for i=1,msubt,1 do
  102.         -- Move X
  103.         projectiles[id].x=projectiles[id].x+msubx
  104.         if collision(col3x3,projectiles[id].x,projectiles[id].y)==1 then
  105.             if terraincollision()==1 or objectcollision()>0 or playercollision()~=projectiles[id].ignore then
  106.                 if (math.abs(projectiles[id].sx)>0.5) then playsound(cc.trapkit.sfx_bounce) end
  107.                 projectiles[id].x=projectiles[id].x-msubx
  108.                 projectiles[id].sx=-projectiles[id].sx*0.05
  109.                 msubx=-msubx*0.05
  110.             end
  111.         else
  112.             projectiles[id].ignore=0
  113.         end
  114.         -- Move Y
  115.         projectiles[id].y=projectiles[id].y+msuby
  116.         if collision(col3x3,projectiles[id].x,projectiles[id].y)==1 then
  117.             if terraincollision()==1 or objectcollision()>0 or playercollision()~=projectiles[id].ignore then
  118.                 if (math.abs(projectiles[id].sy)>0.5) then playsound(cc.trapkit.sfx_bounce) end
  119.                 projectiles[id].y=projectiles[id].y-msuby
  120.                 projectiles[id].sy=-projectiles[id].sy*0.3
  121.                 msuby=-msuby*0.3
  122.                 -- Remove / Exchange with real trapkit
  123.                 if (math.abs(projectiles[id].sy)<0.3) then
  124.                     createobject(o_beartrap,projectiles[id].x,projectiles[id].y)
  125.                     freeprojectile(id)
  126.                 end
  127.             end
  128.         else
  129.             projectiles[id].ignore=0
  130.         end        
  131.         -- Water
  132.         if (projectiles[id].y)>getwatery()+5 then
  133.             -- Effects
  134.             particle(p_waterhit,projectiles[id].x,projectiles[id].y)
  135.             playsound(sfx_hitwater1)
  136.             -- Free projectile
  137.             freeprojectile(id)
  138.             break
  139.         end
  140.     end
  141.     -- Scroll to projectile
  142.     scroll(projectiles[id].x,projectiles[id].y)
  143. end
  144.